/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.gft.bancosimulador.outros;

import com.gft.bancosimulador.beans.Cliente;
import com.gft.bancosimulador.business.ClienteBusiness;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author AEPI
 */
public class Sorteador <P>{
    private List<P> participantes;
    private List<P> contemplados;

    public Sorteador() {
        this(new ArrayList<P>());
    }

    public Sorteador(List<P> participantes) {
        this.participantes = participantes;
    }

    public Sorteador(P[] participantes){
        this(Arrays.asList(participantes));
    }

    public void addParticipantes(List<? extends P> participantes){
        this.participantes.addAll(participantes);
    }

    public void addParticipantes(P[] part){
        this.addParticipantes(Arrays.asList(part));
    }

    public void setParticipantes(List<? extends P> part){
        this.participantes = (List<P>) part;
    }

    public void setParticipantes(P[] part){
        this.setParticipantes(Arrays.asList(part));
    }

    public void addParticipante(P p){
        this.participantes.add(p);
    }

    public List<P> sortear(int totalPremiados){
        this.contemplados = new LinkedList<P>();
        for (int i = 0; i < totalPremiados; i++){
            int codigoPremiado = (int)(Math.random() * participantes.size());
            P premiado = this.participantes.remove(codigoPremiado);
            this.contemplados.add(premiado);
        }
        return contemplados;
    }

    public static void main(String[] args){
        Sorteador<Cliente> sorteadorClientes = new Sorteador<Cliente>();
        sorteadorClientes.setParticipantes(ClienteBusiness.getInstance().consultarClientePorNome(""));
        for (Cliente c: sorteadorClientes.sortear(8)){
            System.out.println("Premiado:" + c.getNome());
        }
    }

    
    
    
    
}
